//
// Created by chaseaishang on 23-5-10.
//

#pragma once
#include "Render/Renderer.h"
#include "Render/Texture.h"
#include "Render/Shader.h"
#include <map>
#include <string>
#include <memory>
class ResourceManager
{
private:
    static ResourceManager* instance;
private:
    ResourceManager();
    ~ResourceManager();

public:
    void init();
    static void Delete();
    std::map<std::string,std::shared_ptr<Shader>>Shaders;
    std::map<std::string,std::shared_ptr<Texture>>Textures;
    std::shared_ptr<Shader> LoadShader(std::string VS_file_name,std::string FS_file_name,std::string shader_name);
    std::shared_ptr<Shader> GetShader(std::string shader_name);
    std::shared_ptr<Texture> LoadTexture(std::string texture_file_name,std::string texture_name);
    std::shared_ptr<Texture> GetTexture(std::string texture_name);
    static ResourceManager* get_instance();
};



